Adds tests
authorRomain Sertelon <romain@sertelon.fr>
Fri, 26 May 2017 21:00:45 +0000 (23:00 +0200)
committerdebris <marek.kotewicz@gmail.com>
Thu, 27 Jul 2017 19:49:27 +0000 (21:49 +0200)
tests/bench.rs
tests/build.rs
tests/check.rs
tests/doc.rs
tests/test.rs
tests/workspaces.rs

index cf68a629eee3dd14b692a7680bea5cebdad191da..9c848d0b1d8db821377cd3317f0883d9ab6486a2 100644 (file)
@@ -16,7 +16,7 @@ fn cargo_bench_simple() {
 
     let p = project("foo")
         .file("Cargo.toml", &basic_bin_manifest("foo"))
-        .file("src/main.rs", r#"
+        .file("src/foo.rs", r#"
             #![feature(test)]
             extern crate test;
 
@@ -44,7 +44,13 @@ fn cargo_bench_simple() {
 [COMPILING] foo v0.5.0 ({})
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url()))
-                       .with_stdout_contains("test bench_hello ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test bench_hello ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -79,7 +85,13 @@ fn bench_bench_implicit() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]mybench-[..][EXE]
 ", dir = prj.url()))
-               .with_stdout_contains("test run2 ... bench: [..]"));
+               .with_stdout("
+running 1 test
+test run2 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -114,7 +126,13 @@ fn bench_bin_implicit() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
 ", dir = prj.url()))
-               .with_stdout_contains("test run1 ... bench: [..]"));
+               .with_stdout("
+running 1 test
+test run1 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -144,7 +162,13 @@ fn bench_tarname() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]bin2-[..][EXE]
 ", dir = prj.url()))
-               .with_stdout_contains("test run2 ... bench: [..]"));
+               .with_stdout("
+running 1 test
+test run2 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -153,7 +177,7 @@ fn cargo_bench_verbose() {
 
     let p = project("foo")
         .file("Cargo.toml", &basic_bin_manifest("foo"))
-        .file("src/main.rs", r#"
+        .file("src/foo.rs", r#"
             #![feature(test)]
             extern crate test;
             fn main() {}
@@ -163,10 +187,16 @@ fn cargo_bench_verbose() {
     assert_that(p.cargo_process("bench").arg("-v").arg("hello"),
                 execs().with_stderr(&format!("\
 [COMPILING] foo v0.5.0 ({url})
-[RUNNING] `rustc [..] src[/]main.rs [..]`
+[RUNNING] `rustc [..] src[/]foo.rs [..]`
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] hello --bench`", url = p.url()))
-                       .with_stdout_contains("test bench_hello ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test bench_hello ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -213,7 +243,7 @@ fn cargo_bench_failing_test() {
 
     let p = project("foo")
         .file("Cargo.toml", &basic_bin_manifest("foo"))
-        .file("src/main.rs", r#"
+        .file("src/foo.rs", r#"
             #![feature(test)]
             extern crate test;
             fn hello() -> &'static str {
@@ -236,16 +266,18 @@ fn cargo_bench_failing_test() {
                 execs().with_stdout("hello\n"));
 
     assert_that(p.cargo("bench"),
-                execs().with_stdout_contains("test bench_hello ... ")
+                execs().with_stdout_contains("
+running 1 test
+test bench_hello ... ")
                        .with_stderr_contains(format!("\
 [COMPILING] foo v0.5.0 ({})
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
 thread '[..]' panicked at 'assertion failed: \
-    `(left == right)`[..]", p.url()))
-                       .with_stderr_contains("[..]left: `\"hello\"`[..]")
-                       .with_stderr_contains("[..]right: `\"nope\"`[..]")
-                       .with_stderr_contains("[..]src[/]main.rs:14[..]")
+    `(left == right)` (left: \
+    `\"hello\"`, right: `\"nope\"`)', src[/]foo.rs:14
+[..]
+", p.url()))
                        .with_status(101));
 }
 
@@ -295,8 +327,19 @@ fn bench_with_lib_dep() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
 [RUNNING] target[/]release[/]deps[/]baz-[..][EXE]", p.url()))
-                       .with_stdout_contains("test lib_bench ... bench: [..]")
-                       .with_stdout_contains("test bin_bench ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test lib_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test bin_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
 }
 
 #[test]
@@ -347,7 +390,13 @@ fn bench_with_deep_lib_dep() {
 [COMPILING] bar v0.0.1 ({dir})
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]bar-[..][EXE]", dir = p.url()))
-                       .with_stdout_contains("test bar_bench ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test bar_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -388,8 +437,19 @@ fn external_bench_explicit() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
 [RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", p.url()))
-                       .with_stdout_contains("test internal_bench ... bench: [..]")
-                       .with_stdout_contains("test external_bench ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test internal_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test external_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
 }
 
 #[test]
@@ -427,8 +487,19 @@ fn external_bench_implicit() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
 [RUNNING] target[/]release[/]deps[/]external-[..][EXE]", p.url()))
-                       .with_stdout_contains("test internal_bench ... bench: [..]")
-                       .with_stdout_contains("test external_bench ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test internal_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test external_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
 }
 
 #[test]
@@ -476,13 +547,25 @@ fn pass_through_command_line() {
 [COMPILING] foo v0.0.1 ({dir})
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url()))
-                .with_stdout_contains("test bar ... bench: [..]"));
+                .with_stdout("
+running 1 test
+test bar ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 
     assert_that(p.cargo("bench").arg("foo"),
                 execs().with_status(0)
                        .with_stderr("[FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
-                       .with_stdout_contains("test foo ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 // Regression test for running cargo-bench twice with
@@ -547,7 +630,19 @@ fn lib_bin_same_name() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", p.url()))
-                       .with_stdout_contains_n("test [..] ... bench: [..]", 2));
+                       .with_stdout("
+running 1 test
+test [..] ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test [..] ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"))
 }
 
 #[test]
@@ -589,8 +684,19 @@ fn lib_with_standard_name() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]
 [RUNNING] target[/]release[/]deps[/]bench-[..][EXE]", dir = p.url()))
-                       .with_stdout_contains("test foo_bench ... bench: [..]")
-                       .with_stdout_contains("test bench ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test foo_bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -629,7 +735,13 @@ fn lib_with_standard_name2() {
 [COMPILING] syntax v0.0.1 ({dir})
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]syntax-[..][EXE]", dir = p.url()))
-                       .with_stdout_contains("test bench ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test bench ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -694,8 +806,19 @@ fn bench_dylib() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench`
 [RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url()))
-                       .with_stdout_contains_n("test foo ... bench: [..]", 2));
+                       .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
 
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
     p.root().move_into_the_past();
     assert_that(p.cargo("bench").arg("-v"),
                 execs().with_status(0)
@@ -705,7 +828,19 @@ fn bench_dylib() {
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] `[..]target[/]release[/]deps[/]foo-[..][EXE] --bench`
 [RUNNING] `[..]target[/]release[/]deps[/]bench-[..][EXE] --bench`", dir = p.url()))
-                       .with_stdout_contains_n("test foo ... bench: [..]", 2));
+                       .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -734,13 +869,25 @@ fn bench_twice_with_build_cmd() {
 [COMPILING] foo v0.0.1 ({dir})
 [FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]", dir = p.url()))
-                       .with_stdout_contains("test foo ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 
     assert_that(p.cargo("bench"),
                 execs().with_status(0)
                        .with_stderr("[FINISHED] release [optimized] target(s) in [..]
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
-                       .with_stdout_contains("test foo ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test foo ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -809,8 +956,19 @@ fn bench_with_examples() {
 [RUNNING] `{dir}[/]target[/]release[/]deps[/]testbench-[..][EXE] --bench`
 [RUNNING] `{dir}[/]target[/]release[/]deps[/]testb1-[..][EXE] --bench`",
                 dir = p.root().display(), url = p.url()))
-                       .with_stdout_contains("test bench_bench1 ... bench: [..]")
-                       .with_stdout_contains("test bench_bench2 ... bench: [..]"));
+                       .with_stdout("
+running 1 test
+test bench_bench1 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+
+running 1 test
+test bench_bench2 ... bench: [..] 0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+
+"));
 }
 
 #[test]
@@ -845,7 +1003,13 @@ fn test_a_bench() {
 [COMPILING] foo v0.1.0 ([..])
 [FINISHED] dev [unoptimized + debuginfo] target(s) in [..]
 [RUNNING] target[/]debug[/]deps[/]b-[..][EXE]")
-                       .with_stdout_contains("test foo ... ok"));
+                       .with_stdout("
+running 1 test
+test foo ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
+
+"));
 }
 
 #[test]
@@ -879,44 +1043,6 @@ fn test_bench_no_run() {
 "));
 }
 
-#[test]
-fn test_bench_no_fail_fast() {
-    if !is_nightly() { return }
-
-    let p = project("foo")
-        .file("Cargo.toml", &basic_bin_manifest("foo"))
-        .file("src/foo.rs", r#"
-            #![feature(test)]
-            extern crate test;
-            fn hello() -> &'static str {
-                "hello"
-            }
-
-            pub fn main() {
-                println!("{}", hello())
-            }
-
-            #[bench]
-            fn bench_hello(_b: &mut test::Bencher) {
-                assert_eq!(hello(), "hello")
-            }
-
-            #[bench]
-            fn bench_nope(_b: &mut test::Bencher) {
-                assert_eq!("nope", hello())
-            }"#);
-
-    assert_that(p.cargo_process("bench").arg("--no-fail-fast"),
-                execs().with_status(101)
-                    .with_stderr_contains("\
-[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
-                    .with_stdout_contains("running 2 tests")
-                    .with_stderr_contains("\
-[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
-                    .with_stdout_contains("test bench_hello [..]")
-                    .with_stdout_contains("test bench_nope [..]"));
-}
-
 #[test]
 fn test_bench_multiple_packages() {
     if !is_nightly() { return }
@@ -987,10 +1113,20 @@ fn test_bench_multiple_packages() {
                 execs().with_status(0)
                        .with_stderr_contains("\
 [RUNNING] target[/]release[/]deps[/]bbaz-[..][EXE]")
-                       .with_stdout_contains("test bench_baz ... bench: [..]")
+                       .with_stdout_contains("
+running 1 test
+test bench_baz ... bench:           0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
                        .with_stderr_contains("\
 [RUNNING] target[/]release[/]deps[/]bbar-[..][EXE]")
-                       .with_stdout_contains("test bench_bar ... bench: [..]"));
+                       .with_stdout_contains("
+running 1 test
+test bench_bar ... bench:           0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
 }
 
 #[test]
@@ -1043,27 +1179,47 @@ fn bench_all_workspace() {
                 execs().with_status(0)
                        .with_stderr_contains("\
 [RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
-                       .with_stdout_contains("test bench_bar ... bench: [..]")
-                       .with_stderr_contains("\
+                       .with_stdout_contains("
+running 1 test
+test bench_bar ... bench:           0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
+                        .with_stderr_contains("\
 [RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
-                       .with_stdout_contains("test bench_foo ... bench: [..]"));
+                       .with_stdout_contains("
+running 1 test
+test bench_foo ... bench:           0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
 }
 
 #[test]
-fn bench_all_exclude() {
+fn bench_all_virtual_manifest() {
     if !is_nightly() { return }
 
-    let p = project("foo")
+    let p = project("workspace")
         .file("Cargo.toml", r#"
+            [workspace]
+            members = ["foo", "bar"]
+        "#)
+        .file("foo/Cargo.toml", r#"
             [project]
             name = "foo"
             version = "0.1.0"
-
-            [workspace]
-            members = ["bar", "baz"]
         "#)
-        .file("src/main.rs", r#"
-            fn main() {}
+        .file("foo/src/lib.rs", r#"
+            pub fn foo() {}
+        "#)
+        .file("foo/benches/foo.rs", r#"
+            #![feature(test)]
+            extern crate test;
+
+            use test::Bencher;
+
+            #[bench]
+            fn bench_foo(_: &mut Bencher) -> () { () }
         "#)
         .file("bar/Cargo.toml", r#"
             [project]
@@ -1071,39 +1227,42 @@ fn bench_all_exclude() {
             version = "0.1.0"
         "#)
         .file("bar/src/lib.rs", r#"
+            pub fn bar() {}
+        "#)
+        .file("bar/benches/bar.rs", r#"
             #![feature(test)]
-
             extern crate test;
 
+            use test::Bencher;
+
             #[bench]
-            pub fn bar(b: &mut test::Bencher) {
-                b.iter(|| {});
-            }
-        "#)
-        .file("baz/Cargo.toml", r#"
-            [project]
-            name = "baz"
-            version = "0.1.0"
-        "#)
-        .file("baz/src/lib.rs", r#"
-            #[test]
-            pub fn baz() {
-                break_the_build();
-            }
+            fn bench_bar(_: &mut Bencher) -> () { () }
         "#);
 
+    // The order in which foo and bar are built is not guaranteed
     assert_that(p.cargo_process("bench")
-                    .arg("--all")
-                    .arg("--exclude")
-                    .arg("baz"),
+                 .arg("--all"),
                 execs().with_status(0)
-                    .with_stdout_contains("\
+                       .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
+                       .with_stdout_contains("
 running 1 test
-test bar ... bench:           [..] ns/iter (+/- [..])"));
+test bench_bar ... bench:           0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
+                        .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
+                       .with_stdout_contains("
+running 1 test
+test bench_foo ... bench:           0 ns/iter (+/- 0)
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
 }
 
 #[test]
-fn bench_all_virtual_manifest() {
+fn bench_virtual_manifest_all_implied() {
     if !is_nightly() { return }
 
     let p = project("workspace")
@@ -1147,45 +1306,23 @@ fn bench_all_virtual_manifest() {
         "#);
 
     // The order in which foo and bar are built is not guaranteed
-    assert_that(p.cargo_process("bench")
-                 .arg("--all"),
+    assert_that(p.cargo_process("bench"),
                 execs().with_status(0)
                        .with_stderr_contains("\
 [RUNNING] target[/]release[/]deps[/]bar-[..][EXE]")
-                       .with_stdout_contains("test bench_bar ... bench: [..]")
-                       .with_stderr_contains("\
-[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
-                       .with_stdout_contains("test bench_foo ... bench: [..]"));
-}
-
-// https://github.com/rust-lang/cargo/issues/4287
-#[test]
-fn legacy_bench_name() {
-    if !is_nightly() { return }
-
-    let p = project("foo")
-        .file("Cargo.toml", r#"
-            [project]
-            name = "foo"
-            version = "0.1.0"
-
-            [[bench]]
-            name = "bench"
-        "#)
-        .file("src/lib.rs", r#"
-            pub fn foo() {}
-        "#)
-        .file("src/bench.rs", r#"
-            #![feature(test)]
-            extern crate test;
-
-            use test::Bencher;
+                       .with_stdout_contains("
+running 1 test
+test bench_bar ... bench:           0 ns/iter (+/- 0)
 
-            #[bench]
-            fn bench_foo(_: &mut Bencher) -> () { () }
-        "#);
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+")
+                        .with_stderr_contains("\
+[RUNNING] target[/]release[/]deps[/]foo-[..][EXE]")
+                       .with_stdout_contains("
+running 1 test
+test bench_foo ... bench:           0 ns/iter (+/- 0)
 
-    assert_that(p.cargo_process("bench"), execs().with_status(0).with_stderr_contains("\
-[WARNING] path `[..]src[/]bench.rs` was erroneously implicitly accepted for benchmark `bench`,
-please set bench.path in Cargo.toml"));
+test result: ok. 0 passed; 0 failed; 0 ignored; 1 measured
+"));
 }
+
index f3e9445f8e39043bc5902409c598d1458ae81263..4bb3fd913515830c955846f4b4f8d72096db3a9e 100644 (file)
@@ -3038,6 +3038,40 @@ fn build_all_virtual_manifest() {
                        [..] Finished dev [unoptimized + debuginfo] target(s) in [..]\n"));
 }
 
+#[test]
+fn build_virtual_manifest_all_implied() {
+    let p = project("workspace")
+        .file("Cargo.toml", r#"
+            [workspace]
+            members = ["foo", "bar"]
+        "#)
+        .file("foo/Cargo.toml", r#"
+            [project]
+            name = "foo"
+            version = "0.1.0"
+        "#)
+        .file("foo/src/lib.rs", r#"
+            pub fn foo() {}
+        "#)
+        .file("bar/Cargo.toml", r#"
+            [project]
+            name = "bar"
+            version = "0.1.0"
+        "#)
+        .file("bar/src/lib.rs", r#"
+            pub fn bar() {}
+        "#);
+
+    // The order in which foo and bar are built is not guaranteed
+    assert_that(p.cargo_process("build"),
+                execs().with_status(0)
+                       .with_stderr_contains("[..] Compiling bar v0.1.0 ([..])")
+                       .with_stderr_contains("[..] Compiling foo v0.1.0 ([..])")
+                       .with_stderr("[..] Compiling [..] v0.1.0 ([..])\n\
+                       [..] Compiling [..] v0.1.0 ([..])\n\
+                       [..] Finished dev [unoptimized + debuginfo] target(s) in [..]\n"));
+}
+
 #[test]
 fn build_all_virtual_manifest_implicit_examples() {
     let p = project("foo")
index 09ebfb0ac449b1abab8710e1dafb066dc9f7c566..d0a0e48fff37b2134f003f6e59009306ecc55618 100644 (file)
@@ -393,3 +393,34 @@ fn check_all() {
         .with_stderr_contains("[..] --crate-name b b[/]src[/]main.rs [..]")
         );
 }
+
+#[test]
+fn check_virtual_all_implied() {
+    let p = project("workspace")
+        .file("Cargo.toml", r#"
+            [workspace]
+            members = ["foo", "bar"]
+        "#)
+        .file("foo/Cargo.toml", r#"
+            [project]
+            name = "foo"
+            version = "0.1.0"
+        "#)
+        .file("foo/src/lib.rs", r#"
+            pub fn foo() {}
+        "#)
+        .file("bar/Cargo.toml", r#"
+            [project]
+            name = "bar"
+            version = "0.1.0"
+        "#)
+        .file("bar/src/lib.rs", r#"
+            pub fn bar() {}
+        "#);
+
+    assert_that(p.cargo_process("check").arg("-v"),
+                execs().with_status(0)
+        .with_stderr_contains("[..] --crate-name foo foo[/]src[/]lib.rs [..]")
+        .with_stderr_contains("[..] --crate-name bar bar[/]src[/]lib.rs [..]")
+        );
+}
index 119b5d32a44671bf45bfb60e1d44ca24ab3037c1..2c322a91709953c34b380a9e5fdd46d49b15ff4a 100644 (file)
@@ -692,6 +692,37 @@ fn doc_all_virtual_manifest() {
                        .with_stderr_contains("[..] Documenting foo v0.1.0 ([..])"));
 }
 
+#[test]
+fn doc_virtual_manifest_all_implied() {
+    let p = project("workspace")
+        .file("Cargo.toml", r#"
+            [workspace]
+            members = ["foo", "bar"]
+        "#)
+        .file("foo/Cargo.toml", r#"
+            [project]
+            name = "foo"
+            version = "0.1.0"
+        "#)
+        .file("foo/src/lib.rs", r#"
+            pub fn foo() {}
+        "#)
+        .file("bar/Cargo.toml", r#"
+            [project]
+            name = "bar"
+            version = "0.1.0"
+        "#)
+        .file("bar/src/lib.rs", r#"
+            pub fn bar() {}
+        "#);
+
+    // The order in which foo and bar are documented is not guaranteed
+    assert_that(p.cargo_process("doc"),
+                execs().with_status(0)
+                       .with_stderr_contains("[..] Documenting bar v0.1.0 ([..])")
+                       .with_stderr_contains("[..] Documenting foo v0.1.0 ([..])"));
+}
+
 #[test]
 fn doc_all_member_dependency_same_name() {
     let p = project("workspace")
index 686157a3247a9378569d821ff554196748b2a5ee..fb3dad0d3763f65e85b292d5ad3c253888564e9e 100644 (file)
@@ -2455,6 +2455,49 @@ fn test_all_virtual_manifest() {
                        .with_stdout_contains("test b ... ok"));
 }
 
+#[test]
+fn test_virtual_manifest_all_implied() {
+    let p = project("workspace")
+        .file("Cargo.toml", r#"
+            [workspace]
+            members = ["a", "b"]
+        "#)
+        .file("a/Cargo.toml", r#"
+            [project]
+            name = "a"
+            version = "0.1.0"
+        "#)
+        .file("a/src/lib.rs", r#"
+            #[test]
+            fn a() {}
+        "#)
+        .file("b/Cargo.toml", r#"
+            [project]
+            name = "b"
+            version = "0.1.0"
+        "#)
+        .file("b/src/lib.rs", r#"
+            #[test]
+            fn b() {}
+        "#);
+
+    assert_that(p.cargo_process("test"),
+                execs().with_status(0).with_stdout_contains("\
+running 1 test
+test b ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
+
+")
+                .with_stdout_contains("\
+running 1 test
+test b ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured
+
+"));
+}
+
 #[test]
 fn test_all_member_dependency_same_name() {
     let p = project("workspace")
index 4670d28f77af30315a5d2cab3c80b6386f509e91..1228ae2821844af39d22063c77c22be55a0c3231 100644 (file)
@@ -673,7 +673,7 @@ manifest located at: [..]
 }
 
 #[test]
-fn virtual_build() {
+fn virtual_build_all_implied() {
     let p = project("foo")
         .file("Cargo.toml", r#"
             [workspace]
@@ -688,11 +688,7 @@ fn virtual_build() {
         .file("bar/src/main.rs", "fn main() {}");
     p.build();
     assert_that(p.cargo("build"),
-                execs().with_status(101)
-                       .with_stderr("\
-error: manifest path `[..]` is a virtual manifest, but this command \
-requires running against an actual package in this workspace
-"));
+                execs().with_status(0));
 }
 
 #[test]